#ifndef __M__LOG_H_ // 防止重复包含
#define __M__LOG_H_
#include <iostream>

#define DBG_LEVEL 0
#define INF_LEVEL 1
#define ERR_LEVEL 2             // 日志等级
#define DEFAULT_LEVEL DBG_LEVEL // 默认等级
#define LOG(level_str, level, format, ...)                                                                            \
    {                                                                                                                 \
        if (level >= DBG_LEVEL)                                                                                       \
        {                                                                                                             \
            time_t t = time(NULL);                                                                                    \
            struct tm *ptm = localtime(&t);                                                                           \
            char time_str[32];                                                                                        \
            strftime(time_str, sizeof(time_str) - 1, "%H:%M:%S", ptm);                                                \
            fprintf(stdout, "[%s][%s][%s:%d]\t" format "\n", level_str, time_str, __FILE__, __LINE__, ##__VA_ARGS__); \
        }                                                                                                             \
    }                                                                                                                 \
// LOG宏函数
#define DLOG(format, ...) LOG("DBG", DBG_LEVEL, format, ##__VA_ARGS__)
#define ILOG(format, ...) LOG("INF", INF_LEVEL, format, ##__VA_ARGS__)
#define ELOG(format, ...) LOG("ERR", ERR_LEVEL, format, ##__VA_ARGS__)

#endif

// int main()
// {

//     time_t t = time(NULL);                                     // 获取系统时间戳
//     struct tm *ptm = localtime(&t);                            // 系统时间戳转化为具体的时间
//     char time_str[32];                                         // 存放时间字符串
//     strftime(time_str, sizeof(time_str) - 1, "%H:%M:%S", ptm); // 将时间格式化到字符串内
//     printf("[%s][%s:%d] LOG\n", time_str, __FILE__, __LINE__);

//     return 0;
// }